08月22, 2025

批量修改 Git 提交中的用户名和邮箱信息

批量修改 Git 提交中的用户名和邮箱信息

为什么要修改 Git 提交历史?

  • 错误用户信息:误用个人邮箱而非公司邮箱。
  • 统一管理:为团队协作统一提交信息。
  • 隐私保护:隐藏真实用户信息。

一键批量修改脚本

使用 git filter-branch 修改提交历史的用户名和邮箱:

#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="旧邮箱@example.com"
CORRECT_NAME="新用户名"
CORRECT_EMAIL="新邮箱@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]; then
    export GIT_COMMITTER_NAME="$CORRECT_NAME"
    export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]; then
    export GIT_AUTHOR_NAME="$CORRECT_NAME"
    export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

注意事项

  • 备份仓库:操作前用 git clone --mirror 备份。
  • 多人协作:修改历史会更改提交哈希,需提前通知协作者。
  • 不可逆操作:理解操作原理后再执行。

git filter-branch 常用功能

  1. 基本用法

    git filter-branch [选项] <filter> -- --all
    • --all:应用到所有分支。
    • <filter>:指定操作类型。
  2. 常用选项

    • --env-filter:修改作者/提交者信息。
    • --tree-filter:修改文件内容或删除文件(较慢)。
    • --index-filter:高效修改暂存区文件。
    • --commit-filter:自定义提交信息。
    • --tag-name-filter:更新标签。
    • --prune-empty:删除空提交。

示例

  • 修改用户信息

    git filter-branch --env-filter '
    OLD_EMAIL="旧邮箱@example.com"
    CORRECT_NAME="新用户名"
    CORRECT_EMAIL="新邮箱@example.com"
    if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]; then
        export GIT_COMMITTER_NAME="$CORRECT_NAME"
        export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
    fi
    if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]; then
        export GIT_AUTHOR_NAME="$CORRECT_NAME"
        export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
    fi
    ' -- --all
  • 删除文件

    git filter-branch --index-filter 'git rm --cached --ignore-unmatch .env' -- --all

替代工具

git filter-repo:比 git filter-branch 更快、更易用,适合大规模仓库清理。

常见问题

  1. 修改历史会影响安全性吗? 不会直接影响,但可能导致同步问题,需备份并通知团队。

  2. 其他开发者如何同步? 需重新拉取代码,可能需解决冲突。

  3. 其他修改方法?

    • git commit --amend:修改最近提交。
    • git rebase -i:交互式修改多条提交。

管理 Git 用户信息提示

  • 全局配置
    git config --global user.name "Your Name"
    git config --global user.email "your_email@example.com"
  • 项目级配置:在 .git/config 设置本地用户信息。
  • 检查提交信息:提交前确认用户名和邮箱。

本文链接:https://587v5.com/post/pi-liang-xiu-gai- Git ti-jiao-zhong-de-yong-hu-ming-he-you-xiang-xin-xi.html

Comments